home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / Development Tools & Languages / • Other Platforms / PCCTS / testcpp / 7 / test.g < prev   
Encoding:
Text File  |  1994-09-14  |  916 b   |  57 lines  |  [TEXT/MPS ]

  1. <<
  2. class ANTLRToken : public DLGBasedToken {
  3. public:
  4.     int muck;
  5. public:
  6.     ANTLRToken(TokenType t, ANTLRChar *s) : DLGBasedToken(t)
  7.         { muck = atoi(s); }
  8.     ANTLRToken() {;}
  9.     ANTLRChar *getText() { return ""; }
  10.     void setText(ANTLRChar *s) { ; }
  11.     virtual ANTLRLightweightToken *makeToken(TokenType t, char *s, int line)
  12.         { setType(t); muck = atoi(s); }
  13. };
  14.  
  15. #include "DLGLexer.h"
  16.  
  17. main()
  18. {
  19.     ANTLRToken aToken;
  20.     DLGFileInput in(stdin);
  21.     DLGLexer scan(&in,2000);
  22.     ANTLRTokenBuffer pipe(&scan);
  23.     scan.setToken(&aToken);
  24.     Expr parser(&pipe);
  25.     parser.init();
  26.  
  27.     parser.calc();
  28. }
  29. >>
  30.  
  31. #token "[\ \t\n]+"    <<skip();>>
  32.  
  33. class Expr {
  34.  
  35. calc:    <<int r;>>
  36.         e>[r]
  37.         <<printf("result is %d\n", r);>>
  38.     ;
  39.  
  40. e > [int r]
  41.     :    <<int a,b=0;>>
  42.         e2>[a] ( "\+" e2>[b] )*
  43.         <<$r = a + b;>>
  44.     ;
  45.  
  46. e2 > [int r]
  47.     :    <<int a,b=1;>>
  48.         NUMBER <<a=$1->muck;>>
  49.         ( "\*" NUMBER <<b=$2->muck;>> )*
  50.         <<$r = a * b;>>
  51.     ;
  52.  
  53. }
  54.  
  55. #token NUMBER        "[0-9]+"
  56.  
  57.